package com.tedu.API.thread;

/**
 * 创建线程---第三种方案：匿名内部类【推荐：创建1次】
 * Lambda表达式---JDK1.8推出的新版本：简化匿名内部类写法
 * Lambda表达式也叫函数式遍历！功能：简化匿名内部类
 *                               简化集合
 *                               简化功能方法
 *                               简化IO流功能
 * Lambda表达式语法：()->{},属于功能性接口！
 * () 代表  匿名内部类中 = new ***（）{****【】{}}  【】中的内容
 * -> 代表
 * {} 代表
 * 需求：创建接口 Insert 插排  提供：电
 *      子实现类 Computer 电脑
 *    子类实现接口---完成对象创建【创建1次】
 *    匿名内部类方式完成对象创建
 *    Lambda表达式结果完成对象创建
 */
public class LambdaAPI {
    public static void main(String[] args) {
        //创建插排接口---必须实现子实现类
     //   Insert cp=new computer(); //多态：造型
     //   cp.Dian();
        //子实现类---创建1次对象--匿名内部类：支持接口以及抽象类创建
      /*  Insert cp=new Insert() {
            public String Dian(long money,char ch) {
                return "电脑通电了";
            }
       };
        cp.Dian(100,'2'); */
        //使用Lambda表达式
       Insert cp=(money,ch)-> "电脑通电了";
        cp.Dian(100,'2');
        /**
         * Lambda表达式【简化方法】---匿名内部类【简化1个子类】【接口创建】
         * () 代表 方法中参数，情况①：无参数，不可以删除
         *                      ②：有参数，有1个参数,括号删除
         *                      ③：有参数，有2个参数以上，不可以删除
         * -> 代表 new对象的过程
         * {} 代表 方法中内容，情况：
         *               ①：看方法返回值 void 空 传入输出语句，删除{}
         *               ②：看方法返回值 Java数据类型   return Java数据类型;
         *                         【两种：八大基本数据类型|引用类型】
         *                         返回值 存在 return 不可以删除 {} 【推荐】
         *       2.1               返回值 不存在 return  可以删除 {} 【不推荐】
         *     ③：看方法返回值  返回值集合 不可以删除 {}
         */
    }
}
//创建插排--接口
interface Insert{
    public  String Dian(long money,char ch);
}
//创建插排实现类--电脑类
/*class computer implements Insert{
    public void Dian() {
        System.out.println("电脑通电开机了~~");
    }
}*/